// package com.hu.auth.common.exception;
//
// import cn.hutool.core.exceptions.ExceptionUtil;
// import com.hu.auth.common.result.R;
// import com.hu.auth.common.result.RCodeEnum;
// import lombok.extern.slf4j.Slf4j;
// import org.apache.ibatis.reflection.ExceptionUtil;
// import org.springframework.beans.factory.annotation.Value;
// import org.springframework.http.converter.HttpMessageNotReadableException;
// import org.springframework.validation.BindException;
// import org.springframework.validation.BindingResult;
// import org.springframework.validation.FieldError;
// import org.springframework.web.HttpMediaTypeNotSupportedException;
// import org.springframework.web.HttpRequestMethodNotSupportedException;
// import org.springframework.web.bind.MethodArgumentNotValidException;
// import org.springframework.web.bind.annotation.ExceptionHandler;
// import org.springframework.web.bind.annotation.RestControllerAdvice;
// import org.springframework.web.multipart.MaxUploadSizeExceededException;
// import org.springframework.web.servlet.NoHandlerFoundException;
//
//
// /**
//  * 全局异常处理
//  *
//  * @Date 2022/3/9 15:48
//  */
// @RestControllerAdvice
// @Slf4j
// public class GlobalExceptionHandler_copy {
//
//     /**
//      * 访问路径不存在
//      */
//     @ExceptionHandler(value = NoHandlerFoundException.class)
//     public R<?> notFoundHandler(NoHandlerFoundException e) {
//         return R.fail(RCodeEnum.REQUEST_NOT_FOUND, e.getMessage());
//     }
//
//     /**
//      * 请求get/post类型错误
//      */
//     @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
//     public R<?> methodExceptionHandler(HttpRequestMethodNotSupportedException e) {
//         return R.fail(RCodeEnum.METHOD_NOT_ALLOWED, e.getMessage());
//     }
//
//     /**
//      * 未找到body参数（接口参数加了@RequsetBody需要json参数，但在请求body里没找到或者参数类型不对或json解析错误）
//      */
//     @ExceptionHandler(value = {HttpMessageNotReadableException.class, HttpMediaTypeNotSupportedException.class})
//     public R<?> notReadableExceptionHandler(Exception e) {
//         log.error("参数错误：", e);
//         return R.fail(RCodeEnum.PARAM_ERROR, e.getMessage());
//     }
//
//     /**
//      * 参数校验错误（json传参，实体类form传参）
//      */
//     @ExceptionHandler(value = {BindException.class, MethodArgumentNotValidException.class})
//     public R<?> paramExceptionHandler(Exception e) {
//         BindingResult bindingResult;
//         if (e instanceof BindException) {
//             bindingResult = ((BindException) e).getBindingResult();
//         } else {
//             bindingResult = ((MethodArgumentNotValidException) e).getBindingResult();
//         }
//         log.error("参数错误:", e);
//         StringBuilder sb = new StringBuilder();
//         for (FieldError error : bindingResult.getFieldErrors()) {
//             sb.append("【").append(error.getField()).append("】").append(error.getDefaultMessage()).append(",");
//         }
//         return R.fail(RCodeEnum.PARAM_ERROR, sb.toString());
//     }
//
//     /**
//      * 业务逻辑错误
//      */
//     @ExceptionHandler(value = LogicException.class)
//     public R<?> logicExceptionHandler(LogicException e) {
//         return R.fail(e.getErrorMessage());
//     }
//
//     /**
//      * 文件上传过大
//      */
//     @Value("${spring.servlet.multipart.max-file-size}")
//     private String maxFileSize;
//     @ExceptionHandler(value = MaxUploadSizeExceededException.class)
//     public R<?> MaxUploadSizeExceededExceptionHandler(MaxUploadSizeExceededException e) {
//         return R.fail("上传的文件大小不能超过" + maxFileSize);
//     }
//
//     /**
//      * 系统未知异常
//      */
//     @ExceptionHandler(value = Exception.class)
//     public R<?> ExceptionHandling(Exception e) {
//         log.error("系统异常：", e);
//         String message = ExceptionUtil.stacktraceToString(e);
//         return R.exception(message);
//     }
//
// }
